


Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.

Задание 9
Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

— в строке только одно число повторяется ровно два раза, остальные числа различны;

— среднее арифметическое неповторяющихся чисел строки не больше суммы повторяющихся чисел.

В ответе запишите только число.

Спрятать решение
Решение.
Сохраним файл в формате «.csv» и решим задачу с помощью языка Python:

file = open('G:/9.csv')
count = 0
for string in file:
    one = []
    thu = []
    lis = list(map(int, string.split(';')))
    for tmp in lis:
        (one if lis.count(tmp)==1 else thu).append(tmp)
    if len(thu)==2 and sum(one)/len(one)<=sum(thu):
        count+=1
    print(one)
print(count)

Источник: Демонстрационная версия ЕГЭ−2023 по информатике

Теория:

Поскольку map() написан на C и сильно оптимизирован, его внутренний подразумеваемый цикл может быть более эффективным, чем обычный цикл for в Python. Это одно из преимуществ использования map().

Второе преимущество использования map() связано с потреблением памяти. С помощью цикла for вам нужно сохранить весь список в памяти вашей системы. С помощью map() вы получаете элементы по запросу, 
и только один элемент находится в памяти вашей системы в данный момент.

Примечание. В Python 2.x map() возвращает список. Это поведение изменилось в Python 3.x. Теперь map() возвращает объект map, который является итератором, выдающим элементы по запросу. 
Вот почему вам нужно вызвать list(), чтобы создать желаемый объект списка.

В качестве другого примера предположим, что вам нужно преобразовать все элементы в списке из строки в целое число. Для этого вы можете использовать map() вместе с int() следующим образом:

>>> str_nums = ["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]
>>> int_nums = map(int, str_nums)
>>> int_nums
<map object at 0x7fb2c7e34c70>
>>> list(int_nums)
[4, 8, 6, 5, 3, 2, 8, 9, 2, 5]
>>> str_nums
["4", "8", "6", "5", "3", "2", "8", "9", "2", "5"]
map() применяет int() к каждому значению в str_nums. 
Поскольку map() возвращает итератор (объект map), вам понадобится вызов list(), чтобы вы могли превратить его в объект списка. 
Обратите внимание, что исходная последовательность не изменяется в процессе

Функция append() позволяет добавлять в список один новый элемент — например, число, строку или другой список.
Функция extend() работает как append(), но в качестве параметра принимает итерируемый объект: список, кортеж или строку. Содержимое этого объекта поэлементно добавляется в другой список.
Кроме методов append() и extend() добавить элементы в список можно с помощью оператора + и срезов. Оба способа действуют как extend() — поочерёдно добавляют элементы одного списка в другой.

